home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / SRC / QLIB / RAND.ASM < prev    next >
Assembly Source File  |  1997-07-13  |  991b  |  79 lines

  1. include qlib.inc
  2. include stdlib.inc
  3.  
  4. ; ADDED : v2.01
  5.  
  6. ;striped right from BC v5.0 LIBs! (with some modification)
  7.  
  8. .data
  9.   s1 dw 0
  10.   s2 dw 1
  11.  
  12. .code
  13.  
  14. srand proc,a:word
  15.   mov ax,a
  16.   mov s1,0
  17.   mov s2,ax
  18.   xor eax,eax
  19.   ret
  20. srand endp
  21.  
  22. rand proc
  23.   pushad
  24.   mov cx,s1
  25.   mov bx,s2
  26.   mov dx,015Ah
  27.   mov ax,4E35h
  28.  
  29.   xchg ax,si
  30.   xchg ax,dx
  31.   test ax,ax
  32.   jz @f
  33.   mul bx
  34. @@:
  35.   jcxz @f
  36.   xchg ax,cx
  37.   mul si
  38.   add ax,cx
  39. @@:
  40.   xchg ax,si
  41.   mul bx
  42.   add dx,si
  43.  
  44.   add ax,1
  45.   adc dx,0
  46.   mov s1,dx
  47.   mov s2,ax
  48.   popad
  49.   xor eax,eax
  50.   mov ax,s1
  51.   and ax,7FFFh
  52.   ret
  53. rand endp
  54.  
  55. randomize proc uses edx ebx
  56.   mov eax,gs:[46ch]    ;timer tick
  57.   inc eax
  58.   mov ebx,gs:[41ah]    ;kbd head/tail
  59.   inc ebx
  60.   mul ebx
  61.   callp srand,ax
  62.   xor eax,eax
  63.   ret
  64. randomize endp
  65.  
  66. random proc uses ebx edx,a:word
  67.   ;returns random num from 0 to (a-1)
  68.   callp rand
  69.   mov bx,a
  70.   xor edx,edx
  71.   idiv bx
  72.   xor eax,eax
  73.   mov ax,dx
  74.   ret
  75. random endp
  76.  
  77. end
  78.  
  79.